/*
 * Copyright (c) 2011 Anthony Vandikas
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation 
 * files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, 
 * modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software 
 * is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 
 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE 
 * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

#include "stdafx.h"
#include "Entry.h"

Entry::Entry() { }

Entry::Entry(const QDateTime &dateTime, const Student &student, const Item &item)
	: dateTime(dateTime), student(student), item(item)
{ }

QDate Entry::getDate() const 
{
	return dateTime.date(); 
}

QTime Entry::getTime() const 
{
	return dateTime.time(); 
}

QDateTime Entry::getDateTime() const 
{ 
	return dateTime; 
}

Student Entry::getStudent() const 
{
	return student; 
}

Item Entry::getItem() const 
{ 
	return item; 
}

void Entry::setDateTime(const QDateTime &value) 
{ 
	dateTime = value; 
}

void Entry::setStudent(const Student &value) 
{ 
	student = value; 
}

void Entry::setItem(const Item &value) 
{ 
	item = value; 
}

QString Entry::toString() const 
{
	return dateTime.toString() + ", " + student.toString() + ", " + item.toString(); 
}

bool Entry::operator ==(const Entry &value) const
{
	return dateTime == value.dateTime && 
		student == value.student &&
		item == value.item;
}

bool Entry::operator !=(const Entry &value) const
{
	return !(*this == value);
}

QDataStream &operator <<(QDataStream &stream, const Entry &entry)
{
	return stream << entry.getDateTime() << entry.getStudent() << entry.getItem();
}

QDataStream &operator >>(QDataStream &stream, Entry &entry)
{
	QDateTime dateTime;
	Student student;
	Item item;

	stream >> dateTime >> student >> item;

	entry.setDateTime(dateTime);
	entry.setStudent(student);
	entry.setItem(item);

	return stream;
}
